package global

import (
	"sync"
	"sync/atomic"
)

type PlanState struct {
	CallSign string // 航班号,唯一
	DES      string // 出发地
	DEP      string // 目的地
	Etot     int64  // 预计起飞时间
	Aldt     int64  // 实际着陆时间
	Utime    int64  // 接收数据时间
	Source   int32  // 数据来源
	Stime    int64  // 数据发送时刻
}

type Suntimes struct {
	Day     int
	Sunrise int64
	Sunset  int64
}

// AirPortState 存储单个机场的状态
type AirPortState struct {
	AirPort string // 机场代码（4位，如 ZGHA）
	Vis     int64  // 能见度, weather
	Cloud   int64  // 云底高, weather
	Rvr     int64  // 跑道视程（RVR）, awos
	Vis1A   int64  // 能见度, awos
	RWY     string // 跑道号, awos
	Oper    int    // 操作类型，1:Cloud/Rvr/Vis/Vis1A被修改，0:状态已广播，归位
}

type Listlight struct {
	Key   string // Key,唯一
	Name  string
	Value string
	Num   int
}

type DayFirstPlan struct {
	Day      int
	CallSign string // 航班号,唯一
	DES      string // 出发地
	DEP      string // 目的地
	Etot     int64  // 预计起飞时间
	Eldt     int64  // 预计着陆时间
}

type MessageItem struct {
	Typestr   string          //错误类型
	WarnLevel int             //警告等级
	Msgstr    string          //告警内容
	Kind      int             //航班计划开灯告警：2 ；气象信息变化调级告警：0；其它告警都是：1
	Sended    map[string]bool // 发送后的uuid
}

var (
	MsgItemCache sync.Map
)

// 全局变量，存储当前机场状态
var (
	CurrentAirPortState sync.Map
)

var (
	PlanMap sync.Map // 本机场的所有航班全局存储 key: Cs
)

var (
	LightData atomic.Value
)

var (
	Suntime atomic.Value
)
